package com.example.hotel.bl.hotel;

import com.example.hotel.po.Comment;
import com.example.hotel.po.HotelRoom;
import com.example.hotel.po.Order;
import com.example.hotel.util.ServiceException;
import com.example.hotel.vo.CouponVO;
import com.example.hotel.vo.HotelVO;
import com.example.hotel.vo.RoomVO;
import com.example.hotel.vo.SearchRoom;

import java.util.List;

public interface HotelService {

    /**
     * 添加酒店
     * @param hotelVO
     * @throws
     */
    void addHotel(HotelVO hotelVO) throws ServiceException;


    /**
     * 预订酒店修改剩余客房信息
     * @param hotelId
     * @param roomType
     * @param rooms
     */
    void updateRoomInfo(Integer hotelId, String roomType,Integer rooms, Double price);

    /**
     * 列表获取酒店信息
     * @return
     */
    List<HotelVO> retrieveHotels();

    /**
     * 获取某家酒店详细信息
     * @param hotelId
     * @return
     */
    HotelVO retrieveHotelDetails(Integer hotelId);

    /**
     * 查看酒店剩余某种房间数量
     * @param hotelId
     * @param roomType
     * @return
     */
    int getRoomCurNum(Integer hotelId,String roomType,Double price);

    void updateRate(Integer hotelId,Double rate);

    void delHotel(HotelVO hotelVO);

    List<HotelVO> retrieveManagerHotels(Integer userId);

    HotelVO retrieveHotelDetails_setDate(SearchRoom searchRoom);

    void delRoom(RoomVO roomVO);

    List<Comment> retrieveHotelsComments(Integer hotelId);

    void updateHotelInfo(HotelVO hotelVO);
}
